package com.lovo.st;

/**
 * 学生类
 */
public class Student {
    /**
     * 姓名
     */
    public String name;
    /**
     * 年龄
     */
    private int age;
    /**
     * 性别
     */
    private String gender;
    public Student(){
//        this("张三",20,"男");
//        System.out.println("");

    }
    public Student(String name,int age,String gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    public void intro(){
        System.out.println("你好，我的名字叫做"+this.name+"，今年"+age+"岁");
    }

    /**
     * 上课
     */
    public void listen(Teacher teacher,Course course){
        System.out.println(this.name + "上" + teacher.name + "的" + course.name);
    }

    public teststatic Student testMethod(Student student){
        student = new Student();
        System.out.println("方法内的student" + student);
        return student;
    }


    public teststatic void main(String[] args) {
        // this指向当前对象的引用
        // this只能用在对象的方法中，不能在static修饰的方法中使用

        // 构造方法：
        // 构造方法是一种特殊的方法，它的作用是创建对象以及初始化对象中的属性
        // 构造方法没有返回值类型，并且方法名和类名必须一样
        // 一个类至少拥有一个构造方法，如果不写，则默认包含一个无参的构造方法
        // 如果自己把构造方法写出来了，那么默认无参的构造方法就会被覆盖
        // 习惯上如果写了一个有参构造方法，尽量把无参的构造方法也写出来，避免通过无参的构造方法产生对象时报错
        // 在构造方法中如果要调用其他的构造方法可以使用this()，需要注意的是this()语句必须放在构造方法的第一句

//        com.lovo.st.Student student = new com.lovo.st.Student();
//        com.lovo.st.Student student1 = new com.lovo.st.Student();
//        com.lovo.st.Student student2 = student;
//
//        student.name = "张三";
//        student.gender = "男";
//        student.age = 20;
//
//        student1.name = "李四";
//        student1.gender = "女";
//        student1.age = 25;
//        student.intro();
//        student1.intro();
//        student2.intro();
//
//
//        int a;
//        System.out.println(a);
//        System.out.println(student == student2);
//        student = testMethod(student);
//        System.out.println("方法外的student" + student );
//        testMethod(student1);
//        testMethod(student2);

        Student student = new Student();
        student.intro();
        Student student1 = new Student("张飞",20,"男");
        student1.intro();

    }

}
